SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE PROC [dbo].[SP_TXMVTO_CNTB_Q43]      
/*------------------------------------------------------------*/          
/*----- Empresa          : OFISIS S.A.                    ----*/          
/*----- Cliente          : OFISIS S.A.                    ----*/          
/*----- Sistema          : Contabilidad                   ----*/          
/*----- Modulo           : Empresa                        ----*/          
/*----- Programa         : Gesti?n en Linea (PARA REPORTE VOUCHER DIF CAMBIO EN LINEA) ----*/          
/*----- Script           : TXMVTO_CNTB                    ----*/          
/*----- Nombre           : SP_TXMVTO_CNTB_Q43             ----*/          
/*----- Desarrollado por : PDGV                           ----*/          
/*----- Fecha            : 11/02/2003                     ----*/          
/*----- Base de Datos    : MS SQL Server                  ----*/          
/*----- Version          : 8.0                            ----*/          
/*----- Invoca a SP      :                                ----*/          
/*------------------------------------------------------------*/          
/*------------------------------------------------------------*/          
/*----- Modificado 1 por : Percy Garc?a                   ----*/          
/*----- Fecha Modifica   : 26/11/2003                     ----*/          
/*----- Detalle Modifica : Basado en el sp_txmvto_cntb_i25----*/         
/*------------------------------------------------------------*/         
/*------------------------------------------------------------*/          
/*----- Drop proc SP_TXMVTO_CNTB_Q43                      ----*/          
/*----- Grant all on SP_TXMVTO_CNTB_Q43 to public         ----*/          
/*----- SP_TXMVTO_CNTB_Q43   '01',1,'001','093', 2003, 2, '0000000001'----*/          
/*------------------------------------------------------------*/          
@ISCO_EMPR         TD_VC_002,          
@INNU_CNTB_EMPR    TD_IN_001,          
@ISCO_UNID_CNTB    TD_VC_003,          
@ISCO_OPRC_CNTB    TD_VC_003,          
@INNU_ANNO         TD_IN_004_ANNO,          
@INNU_MESE         TD_IN_002_MESE,          
@ISNU_ASTO         TD_VC_010,           
@ISCO_CNTA_EMPR    TD_VC_020,         
@ISST_FLAG         TD_VC_003,       
@ISID_GANA_CAMB    TD_VC_003,         
@ISID_PERD_CAMB    TD_VC_003,       
@INNU_SECU         TD_IN_002,       
@ONNU_MAXI_SECU    TD_IN_002 OUT      
      
As          
DECLARE           
@VSST_ASIE_AUX     TD_VC_003,          
@VSST_GEST_0001    TD_VC_001,          
@VSCO_OPRC_0001    TD_VC_003,          
@VSCO_CNTA_DEST  TD_VC_020_CNTA,          
@VSCO_CNTA_CONT  TD_VC_020_CNTA,          
@VSST_CNTA_CAMB  TD_VC_003,          
@VSST_AUXI_0001  TD_VC_001_SINO,          
@VSST_AUXI_0002   TD_VC_001_SINO,          
@VNNU_MAXI_SECU  TD_IN_001,          
@VSCO_MONE_0001  TD_VC_003,          
@VNFA_CMPR_0001  TD_NU_015_006,          
@VNFA_VNTA_0001   TD_NU_015_006,          
@VNFA_CAMB_0001   TD_NU_015_006,          
@VSTI_AUXI_0001 TD_VC_001,          
@VSCO_AUXI_0001 TD_VC_020,          
@VSTI_AUXI_0002 TD_VC_001,          
@VSCO_AUXI_0002 TD_VC_020,          
@VSTI_OPER_DEST TD_VC_003,          
@VSTI_OPER_CONT   TD_VC_003,          
@CNNU_SECU    TD_IN_001,          
@CSCO_CNTA_EMPR    TD_VC_020_CNTA,          
@CSTI_AUXI_EMPR   TD_VC_001,          
@CSCO_AUXI_EMPR   TD_VC_020,          
@CSCO_MONE    TD_VC_003,          
@CSTI_OPER    TD_VC_003,          
@CNIM_MVTO_ORIG      TD_NU_016_004,          
@CNIM_MVTO_CNTB  TD_NU_016_004,          
@CSDE_GLOS           TD_VC_100,          
@CSCO_ORDE_SERV  TD_VC_020,          
@CDFE_ASTO_CNTB  TD_DT_001,          
@CSTI_CAMB           TD_VC_003,          
@CNFA_CAMB           TD_NU_015_006,          
@CSSI_MVTO_CNTB      TD_VC_003,          
@CDFE_DOCU_VENC      TD_DT_001,          
@CNFA_CAMB_DIAR      TD_NU_015_006,          
@CDFE_DOCU_REFE  TD_DT_001,          
@CNNU_PROC           TD_IN_001,          
@CNNU_PROC_SECU  TD_IN_001  ,        
-------------------------        
@VSCO_MONE     TD_VC_003,          
@IDFE_ASTO     TD_DT_001,        
@VSSI_MVTO_CNTB TD_VC_003,        
--@VDFE_ASTO_CNTB TD_DT_001,         
@VSCO_GANA_REDO TD_VC_020,        
@VSCO_PERD_REDO TD_VC_020,        
@VNTO_SALD   TD_NU_016_004,         
@VNNU_FACT_REDO TD_NU_015_006,        
@VSID_GANA_REDO TD_VC_003,        
@VSID_PERD_REDO TD_VC_003,        
@VDFE_ASTO_CNTB TD_DT_001        
          
SELECT @VSST_ASIE_AUX  = NULL             
SELECT @VSST_GEST_0001    = NULL          
SELECT @VSCO_OPRC_0001    = NULL          
SELECT @VSCO_CNTA_DEST  = NULL          
SELECT @VSCO_CNTA_CONT  = NULL          
SELECT @VSST_CNTA_CAMB  = NULL          
SELECT @VSST_AUXI_0001  = NULL          
SELECT @VSST_AUXI_0002   = NULL          
SELECT @VNNU_MAXI_SECU  = 0.00          
SELECT @VSCO_MONE_0001  = NULL          
SELECT @VNFA_CMPR_0001  = 0.00          
SELECT @VNFA_VNTA_0001   = 0.00          
SELECT @VNFA_CAMB_0001   = 0.00          
SELECT @VSTI_AUXI_0001 = NULL          
SELECT @VSCO_AUXI_0001 = NULL          
SELECT @VSTI_AUXI_0002 = NULL          
SELECT @VSCO_AUXI_0002 = NULL          
SELECT @VSTI_OPER_DEST = NULL          
SELECT @VSTI_OPER_CONT   = NULL          
SELECT @CNNU_SECU  = 0          
SELECT @CSCO_CNTA_EMPR    = NULL          
SELECT @CSTI_AUXI_EMPR   = NULL          
SELECT @CSCO_AUXI_EMPR   = NULL          
SELECT @CSCO_MONE = NULL          
SELECT @CSTI_OPER = NULL          
SELECT @CNIM_MVTO_ORIG  = 0.00          
SELECT @CNIM_MVTO_CNTB = 0.00          
SELECT @CSDE_GLOS       = NULL          
SELECT @CSCO_ORDE_SERV = NULL          
SELECT @CDFE_ASTO_CNTB = NULL          
SELECT @CSTI_CAMB           = NULL          
SELECT @CNFA_CAMB           = 0.00          
SELECT @CSSI_MVTO_CNTB      = NULL          
SELECT @CDFE_DOCU_VENC      = NULL          
SELECT @CNFA_CAMB_DIAR      = 0.00          
SELECT @CDFE_DOCU_REFE  = NULL          
SELECT @CNNU_PROC           = 0          
SELECT @CNNU_PROC_SECU  = 0          
          
 SELECT @VSST_ASIE_AUX = ST_ASIE_GEST,@VSST_GEST_0001= ST_GEST_LINE        
 FROM TMPARA_CONT          
 WHERE CO_EMPR = @ISCO_EMPR          
              
IF @VSST_ASIE_AUX = 'ORI'          
 BEGIN          
   IF @VSST_GEST_0001 ='S'          
   BEGIN          
          
    DECLARE CU_TWMVTO_CNTB_Q43_1 CURSOR          
    For          
    Select t1.NU_SECU, t1.FE_ASTO_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR,          
    t1.TI_CAMB, t1.CO_MONE, t1.FA_CAMB, t1.TI_OPER,          
    t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB, t1.DE_GLOS,           
    t1.SI_MVTO_CNTB, t1.FA_CAMB_DIAR      
    FROM #TWMVTO_CNTB t1      
    Where t1.CO_EMPR = @ISCO_EMPR          
    AND t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR          
    AND t1.CO_UNID_CNTB = @ISCO_UNID_CNTB          
    AND t1.CO_OPRC_CNTB = @ISCO_OPRC_CNTB          
    AND t1.NU_ANNO = @INNU_ANNO          
    AND t1.NU_MESE = @INNU_MESE          
    AND t1.NU_ASTO = @ISNU_ASTO          
    And t1.NU_SECU = @INNU_SECU      
    And SI_MVTO_CNTB = 'APR'          
    And (Exists (Select CO_EMPR From TTIDEN_CNTA      
    Where CO_EMPR = @ISCO_EMPR      
    And NU_CNTB_EMPR = @INNU_CNTB_EMPR       
    And NU_ANNO = 9999      
    And ID_CNTA In ( @ISID_GANA_CAMB, @ISID_PERD_CAMB )      
    And CO_CNTA_EMPR = t1.CO_CNTA_EMPR) Or Exists(Select CO_EMPR From TMPLAN_EMPR      
    Where CO_EMPR = @ISCO_EMPR      
    And NU_ANNO = 9999      
    And CO_CNTA_EMPR = t1.CO_CNTA_EMPR      
    And IsNull(CO_GANA_DIFE, '') != ''       
    And IsNull(CO_PERD_DIFE, '') != ''))      
          
    OPEN  CU_TWMVTO_CNTB_Q43_1          
    FETCH CU_TWMVTO_CNTB_Q43_1 INTO @CNNU_SECU,@CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,          
 @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,@CSTI_CAMB,@CSCO_MONE,@CNFA_CAMB,          
 @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,@CSDE_GLOS,@CSSI_MVTO_CNTB,          
 @CNFA_CAMB_DIAR      
             
    WHILE  @@Fetch_Status = 0          
      BEGIN          
 SELECT  @VSCO_CNTA_DEST = CO_CNTA_DEST, @VSCO_CNTA_CONT = CO_CNTA_CONT,           
                @VSST_CNTA_CAMB = ST_CNTA_CAMB          
 FROM TMPLAN_EMPR          
 WHERE CO_EMPR = @ISCO_EMPR          
 AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR          
 AND NU_ANNO = 9999          
      
 -- saca de la tabla TRAUXI_GEST las cuentas contrapartida y destino          
 If @VSCO_CNTA_DEST Is NULL Or @VSCO_CNTA_CONT Is NULL          
 Begin           
            
 Select @VSCO_CNTA_DEST = CO_CNTA_DEST, @VSCO_CNTA_CONT = CO_CNTA_CONT          
 From TRAUXI_GEST          
 Where CO_EMPR = @ISCO_EMPR          
 And CO_CNTA_EMPR = @CSCO_CNTA_EMPR          
 And TI_AUXI_EMPR = @CSTI_AUXI_EMPR          
 And CO_AUXI_EMPR = @CSCO_AUXI_EMPR          
          
/* Select  @VSST_CNTA_CAMB = ST_CNTA_CAMB          
 From TMPLAN_EMPR          
 Where CO_EMPR = @ISCO_EMPR          
 And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR          
 And   NU_ANNO = 9999          */
      End           
 -- fin saca de la tabla TRAUXI_GEST las cuentas contrapartida y destino                   
  IF @VSCO_CNTA_DEST IS NOT  NULL  AND @VSCO_CNTA_CONT IS NOT  NULL BEGIN          
      SELECT @VSST_AUXI_0001 = ST_AUXI_EMPR            
    FROM TMPLAN_EMPR          
    WHERE CO_EMPR = @ISCO_EMPR          
    AND CO_CNTA_EMPR = @VSCO_CNTA_DEST          
    AND NU_ANNO = 9999          
          
      SELECT @VSST_AUXI_0002 = ST_AUXI_EMPR            
    FROM TMPLAN_EMPR          
    WHERE CO_EMPR = @ISCO_EMPR          
    AND CO_CNTA_EMPR = @VSCO_CNTA_CONT          
    AND NU_ANNO = 9999          
          
      SELECT  @VNNU_MAXI_SECU = MAX(NU_SECU) + 1           
      FROM #TWMVTO_CNTB           
    WHERE           
    CO_EMPR  =  @ISCO_EMPR    And                                                
    NU_CNTB_EMPR  =  @INNU_CNTB_EMPR  And          
    CO_UNID_CNTB  =  @ISCO_UNID_CNTB  And          
    CO_OPRC_CNTB  =  @ISCO_OPRC_CNTB  And          
    NU_ANNO  =  @INNU_ANNO   And          
    NU_MESE  =  @INNU_MESE    And          
    NU_ASTO  =  @ISNU_ASTO            
          
        SELECT  @VSCO_MONE_0001 = CO_MONE            
      FROM TTCNTB_EMPR          
      WHERE CO_EMPR = @ISCO_EMPR          
      And NU_CNTB_EMPR = @INNU_CNTB_EMPR          
          
        SELECT  @VNFA_CMPR_0001=  ISNULL(FA_CMPR_OFIC,1),          
                      @VNFA_VNTA_0001 = ISNULL(FA_VNTA_OFIC,1)           
      FROM TCFACT_CAMB          
      WHERE CO_MONE <> @VSCO_MONE_0001          
         and FE_CAMB = @CDFE_ASTO_CNTB          
   IF @VSST_CNTA_CAMB ='COM'          
    SELECT  @VNFA_CAMB_0001 = @VNFA_CMPR_0001          
   IF @VSST_CNTA_CAMB='VEN'            
    SELECT  @VNFA_CAMB_0001 = @VNFA_VNTA_0001          
          
   IF @VSST_AUXI_0001 ='N'          
         BEGIN          
    SELECT @VSTI_AUXI_0001 = NULL          
    SELECT @VSCO_AUXI_0001 = NULL          
         END          
   ELSE          
      BEGIN           
    SELECT @VSTI_AUXI_0001 = @CSTI_AUXI_EMPR          
    SELECT @VSCO_AUXI_0001 = @CSCO_AUXI_EMPR          
         END           
          
   IF @VSST_AUXI_0002 ='N'          
         BEGIN          
    SELECT @VSTI_AUXI_0002 = NULL          
    SELECT @VSCO_AUXI_0002 = NULL          
         END          
   ELSE          
         BEGIN           
    SELECT  @VSTI_AUXI_0002 = @CSTI_AUXI_EMPR          
    SELECT  @VSCO_AUXI_0002 = @CSCO_AUXI_EMPR          
         END           
          
   IF @CSTI_OPER = 'CAR' BEGIN          
    SELECT  @VSTI_OPER_DEST = 'CAR'          
    SELECT  @VSTI_OPER_CONT = 'ABO'          
         END           
          
   IF @CSTI_OPER = 'ABO'  BEGIN          
    SELECT @VSTI_OPER_DEST = 'ABO'          
    SELECT @VSTI_OPER_CONT = 'CAR'          
         END          
                     
      INSERT INTO #TWMVTO_CNTB          
      ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,          
      NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,          
      TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,          
      IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, FA_CAMB_DIAR)          
      VALUES          
      ( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB,          
      @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_MAXI_SECU, @CDFE_ASTO_CNTB,          
      @VSCO_CNTA_DEST, @VSTI_AUXI_0001, @VSCO_AUXI_0001, NULL, NULL,          
      NULL, @CSTI_CAMB, @CSCO_MONE, @CNFA_CAMB, @VSTI_OPER_DEST,           
      @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB, 1.00)          
          
   SELECT  @VNNU_MAXI_SECU = @VNNU_MAXI_SECU +1          
          
      INSERT  INTO #TWMVTO_CNTB          
      ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,          
      NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,          
      TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,          
      IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS,           
      SI_MVTO_CNTB, FA_CAMB_DIAR)          
      VALUES          
      ( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB,          
        @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_MAXI_SECU, @CDFE_ASTO_CNTB,          
        @VSCO_CNTA_CONT, @VSTI_AUXI_0002, @VSCO_AUXI_0002, NULL, NULL,          
        NULL, @CSTI_CAMB, @CSCO_MONE, @CNFA_CAMB, @VSTI_OPER_CONT,           
        @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB, 1.00)           
               
END  -- @VSCO_CNTA_DEST AND @VSCO_CNTA_CONT          
      
FETCH CU_TWMVTO_CNTB_Q43_1 INTO @CNNU_SECU,@CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,          
     @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,@CSTI_CAMB,@CSCO_MONE,@CNFA_CAMB,          
     @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,@CSDE_GLOS,@CSSI_MVTO_CNTB,          
     @CNFA_CAMB_DIAR      
          
END -- END DEL WHILE          
          
CLOSE CU_TWMVTO_CNTB_Q43_1           
DEALLOCATE CU_TWMVTO_CNTB_Q43_1           
           
END -- S          
END  -- ORI          
      
If  @VNNU_MAXI_SECU > 0      
    Begin       
    Select @ONNU_MAXI_SECU = @VNNU_MAXI_SECU      
    End      
Else       
    Begin       
    Select @ONNU_MAXI_SECU = @INNU_SECU      
    End       
      
          
RETURN          
          
      
      
    
  





GO
